package com.cheng.example.book.advise151.chap7;

import java.util.List;

/**
 * 1、限定下界可以写，限定上界可以读
 */
public class Client96 {

//    public static <E> void read(List<? super E> list) {
//        for (Object obj : list) {
//            System.out.println(obj);
//        }
//    }


    /**
     *
     * 这种情况可以读
     * 反正都是E的子类，拿E去遍历就行了
     * 要添加不可以，添加E的子类，可定不行了
     * @param list
     * @param <E>
     */
    public static <E> void read(List<? extends E> list) {
        for (E obj : list) {
            System.out.println(obj);
        }
    }


    //因为编译期无法推断是否是Integer或者Double
//    public static  void write(List<? extends Number> list) {
//        //编译失败
////        list.add(123);
//    }


    //因为编译期无法推断是否是Integer或者Double
    //限定下界
    public static void write(List<? super Number> list) {
        //编译成功
        list.add(123);
//        for (Number number : list) {
//            System.out.println(number);
//        }


        for (Object number : list) {
            System.out.println(number);
        }
    }

}
